From: Steve Frécinaux Date: Thu, 1 Oct 2009 09:23:00 +0000 (+0200) Subject: Select next window from the current app on alt+tab X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~10786 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=26015ef16d22027d14ed32dbea353480628a3708;p=gnome-shell.git Select next window from the current app on alt+tab This slightly changes the behaviour of the alt+tab window, this way: when using alt-tab on a workspace that contains two or more windows from the same window, the application selected when hitting alt+tab is the currently selected application, but the highlighted window is the next one. Intended goal is to make it easier to cycle around windows of the same application while not having to cycle through all the applications first. https://bugzilla.gnome.org/show_bug.cgi?id=590563 --- diff --git a/js/ui/altTab.js b/js/ui/altTab.js index 74cb69fa4..6ff06aae6 100644 --- a/js/ui/altTab.js +++ b/js/ui/altTab.js @@ -86,7 +86,7 @@ AltTabPopup.prototype = { this._appsBox.add_actor(box); }, - show : function(initialSelection) { + show : function(backward) { let appMonitor = Shell.AppMonitor.get_default(); let apps = appMonitor.get_running_apps (""); @@ -138,7 +138,19 @@ AltTabPopup.prototype = { this.actor.x = primary.x + Math.floor((primary.width - this.actor.width) / 2); this.actor.y = primary.y + Math.floor((primary.height - this.actor.height) / 2); - this._updateSelection(initialSelection); + if (!backward && this._icons[this._selected].windows.length > 1) { + let candidateWindow = this._icons[this._selected].windows[1]; + if (candidateWindow.get_workspace() == activeWorkspace) { + this._currentWindows[this._selected] = candidateWindow; + this._updateSelection(0); + } + else { + this._updateSelection(1); + } + } + else { + this._updateSelection(backward ? -1 : 1); + } // There's a race condition; if the user released Alt before // we got the grab, then we won't be notified. (See diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index c01a510ee..46e5964ef 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -274,7 +274,7 @@ WindowManager.prototype = { _startAppSwitcher : function(shellwm, binding, window, backwards) { let tabPopup = new AltTab.AltTabPopup(); - if (!tabPopup.show(backwards ? -1 : 1)) + if (!tabPopup.show(backwards)) tabPopup.destroy(); } };